{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第四次练习"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "+ 请务必交到exer4文件夹下，谢绝交到master下\n",
    "+ 请不要改动任何文件，拜托\n",
    "+ 请在10月30日前提交。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "请写一下姓名和学号：\n",
    "+ 姓名  \n",
    "+ 学号"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 题目一\n",
    "一般的歌，分为主歌和副歌部分。副歌有重复，对比两大功能。这就是A－B的基本曲式形式结构。  \n",
    "请找一首你的主打歌，把歌词打印出来，重复的副歌部分，请写一个函数，调用函数打印出来。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "with open('song.txt', 'w') as wt:\n",
    "    wt.write(\"밀어내려고，하면 할 수록，떠오르는 너，눈을 감아도，선명해진다，Let Me Out，Why Don't You Let Me Go，You Wanna Hold Me Down，Go Away Go Away，네게서 멀어지고 싶은데，끌리듯 다가가，알면서도 난，Woo Woo Woo Woo Woo\n",
    "              오늘도 원해，Let Me Out，잠시만 나를 내버려둬 Uh，조금만 내게 시간을 줘 To Me，눈앞에 그림자 처럼，헤어나지 못해，아직 네 숨결이 그리워，Let Me Out，떠날 수 없어 난\n",
    "              널 보고 있으면，No Way No way，You Gotta Let Me Out，운명인듯이，이어져 있는，너와 내 공간，벗어나면 더，보고파진다，Let Me Out，Why Don't You Let Me Go，You Wanna Hold Me Down，Go Away Go Away，네게서 멀어지고 싶은데，끌리듯 다가가\n",
    "              알면서도 난，Woo Woo Woo Woo Woo，오늘도 원해，Let Me Out，빠져 나가기엔，너무나 벅차 날 꺼내줘，결국엔 다시 되돌아가，저 멀리 떠나가줘，너의 온기를 아직도，쥐고 놓지 못해，내 맘이 맘대로，아직도 잡고있고，심장이 맘대로 뛰어\n",
    "            너에게로 뛰어，왜 나는 너의 손끝을，놓아주지 못해，시간이 갈 수록 생각나，Let Me Out，떠날 수 없어 난，아직까지도，Woo Woo Woo Woo Woo，You Gotta Let Me Out\")\n",
    "with open('song.txt',\"r\") as f:\n",
    "    lines = f.readlines()\n",
    "lines\n",
    "def song(main_song=None,refrain):\n",
    "    print('副歌：%s'%refrain)\n",
    "    if main_song:\n",
    "        print(\"主歌: %s\" % main_song)\n",
    "song(refrain='Let Me Out')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 题目二\n",
    "请写一个函数，能够计算均值、样本方差和n(自己写公式哦)。\n",
    "每次输入十个以上的数字，能够输出上述三个统计量。\n",
    "至少调用两次。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "请输入数值，用空格隔开:1 3 5 7 9 12 15 19 24 27 29\n",
      "n=11\n",
      "average=19.285714\n",
      "var = 9.565563\n"
     ]
    }
   ],
   "source": [
    "lst=[]\n",
    "str=input(\"请输入数值，用空格隔开:\")\n",
    "lst1=str.split(\" \")\n",
    "i = 0\n",
    "print('n=%i'%len(lst1))\n",
    "while i <=len(lst1)+1:\n",
    "    lst.append(int(lst1.pop()))\n",
    "    i +=1\n",
    "def sum(list):\n",
    "    s=0\n",
    "    for x in list:\n",
    "        s +=x\n",
    "    return s\n",
    "def average(list):\n",
    "        avg=0\n",
    "        avg=sum(list)/(len(list)*1.0)\n",
    "        return avg\n",
    "print('average=%f'%average(lst))\n",
    "import math\n",
    "def var(list,avg):\n",
    "        var1 = 0\n",
    "        for i in list:\n",
    "            var1 += float((i-avg)**2*1.0)\n",
    "            var2 = (math.sqrt(var1/(len(lst)-1)*1.0))\n",
    "        return var2\n",
    "print(\"var = %f\"%var(lst,average(list)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "lst=[]\n",
    "str=input(\"请输入数值，用空格隔开:\")\n",
    "lst1=str.split(\" \")\n",
    "i = 0\n",
    "def algorithm(formule):\n",
    "     while i <=len(lst1)+1:\n",
    "        lst.append(int(lst1.pop()))\n",
    "        i +=1\n",
    "    def average(list):\n",
    "            avg=0\n",
    "            avg=sum(list)/(len(list)*1.0)\n",
    "        return avg\n",
    "\n",
    "        import math\n",
    "    def var(list,avg):\n",
    "            var1 = 0\n",
    "        for i in list:\n",
    "            var1 += float((i-avg)**2*1.0)\n",
    "            var2 = (math.sqrt(var1/(len(lst)-1)*1.0))\n",
    "        return var2\n",
    "print('n=%i'%len(lst1))\n",
    "print('average=%f'%average(lst))   \n",
    "print(\"var = %f\"%var(lst,average(list)))\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 题目三\n",
    "刚才那个函数，默认的是输出均值、样本方差和n，请在后面添加一个关键词参数，让这个函数可以选择输出样本标准差或方差。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def algorithm(n,average,var):"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 题目四\n",
    "刚才那个函数，请再增加三个关键词参数，让这个参数可以选择输出均值的标准误、最大值、最小值或不输出这三个统计量。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def algorithm(n,average,var,standarderror,max_num,min_num):\n",
    "def algorithm(n,average,var,standarderror=None,max_num=None,min_num=None):    "
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
